<?php

class SiteController extends Controller
{
	/**
	 * Declares class-based actions.
	 */
	public function actions()
	{
		return array(
			// captcha action renders the CAPTCHA image displayed on the contact page
			'captcha'=>array(
				'class'=>'CCaptchaAction',
				'backColor'=>0xFFFFFF,
			),
			// page action renders "static" pages stored under 'protected/views/site/pages'
			// They can be accessed via: index.php?r=site/page&view=FileName
			'page'=>array(
				'class'=>'CViewAction',
			),
		);
	}

	/**
	 * This is the default 'index' action that is invoked
	 * when an action is not explicitly requested by users.
	 */
	public function actionIndex()
	{
                $criterio = new CDbCriteria();
                $criterio->condition = 'situacao = :situacao';
                $criterio->params = array(':situacao'=>'1');

                $dataProvider = new CActiveDataProvider('Questionario',array(
                    'criteria'=>$criterio,
                ));
                
		$this->render('index',array(
                    'dataProvider'=>$dataProvider,
                ));
	}

	/**
	 * This is the action to handle external exceptions.
	 */
	public function actionError()
	{
	    if($error=Yii::app()->errorHandler->error)
	    {
	    	if(Yii::app()->request->isAjaxRequest)
	    		echo $error['message'];
	    	else
	        	$this->render('error', $error);
	    }
	}

	/**
	 * Displays the contact page
	 */
	public function actionContato()
	{
            $model=new Contato;
            if(isset($_POST['Contato']))
            {
                $model->attributes=$_POST['Contato'];
                if($model->validate())
                {
                    $headers="From: {$model->email}\r\nReply-To: {$model->email}";
                    mail(Yii::app()->params['adminEmail'],$model->subject,$model->body,$headers);
                    $this->refresh();
                }
            }
            $this->render('contato',array('model'=>$model));
	}

	/**
	 * Displays the login page
	 */
	public function actionLogin()
	{
            $model=new LoginForm;

            // if it is ajax validation request
            if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
            {
                echo CActiveForm::validate($model);
                Yii::app()->end();
            }

            // collect user input data
            if(isset($_POST['LoginForm']))
            {
                $model->attributes=$_POST['LoginForm'];
                // validate user input and redirect to the previous page if valid
                if($model->validate() && $model->login())
                    $this->redirect(Yii::app()->user->returnUrl);
            }
            // display the login form
            $this->render('login',array('model'=>$model));
	}

	/**
	 * Logs out the current user and redirect to homepage.
	 */
	public function actionLogout()
	{
		Yii::app()->user->logout();
		$this->redirect(Yii::app()->homeUrl);
	}
        
        public function actionCadastro()
        {
            $model=new Usuario;

            if(isset($_POST['ajax']) && $_POST['ajax']==='usuario-cadastro-form')
            {
            echo CActiveForm::validate($model);
            Yii::app()->end();
            }

            if(isset($_POST['Usuario']))
            {
                $model->attributes=$_POST['Usuario'];
                
                if($model->validate())
                {
                    $checagem = Usuario::model()->find('login = :login OR email = :email',array(':login'=>$model->login,':email'=>$model->email));
                
                    if($checagem === null)
                    {
                        if($model->save())
                        {
                            Yii::app()->user->setFlash('sucesso','Usuário registrado com sucesso!');
                            $this->redirect(array('site/index'));
                        }
                    }else
                    {
                        Yii::app()->user->setFlash('aviso','Usuário/Email já cadastrado no sistema!');
                    }
                }
            }
            
            $this->render('cadastro',array('model'=>$model));
        }
        
        public function actionResponder($q)
        {
            $model = new Resultado;
            $resposta = new Resposta;

            $questionario = Questionario::model()->findByPk($q);
            $questoes = Questao::model()->findAll('id_questionario = :id_questionario',array(':id_questionario'=>$q));
            
            $valid = false;
            
            if(isset($_POST['Resultado']))
            {
                $model->attributes = $_POST['Resultado'];
                $model->id_usuario = Yii::app()->user->id;
                $model->id_questionario = $q;
                $model->data_resultado = date('Y-m-d H:i:s');
                
                if($model->validate())
                {
                    $valid = true;
                    
                    if($model->save())
                    {
                        if(isset($_POST['Resposta']))
                        {
                            $idResultado = $model->getPrimaryKey();
                            
                            foreach($questoes as $questao)
                            {
                                $resposta->attributes = $_POST['Resposta'][$questao->id_questao];
                                $resposta->id_resultado = $idResultado;
                                $resposta->id_questao = $questao->id_questao;
                                $resposta->id_alternativa = $_POST['Resposta'][$questao->id_questao]['id_alternativa'];
                                
                                $valid = $valid && $resposta->validate();
                            }
                            
                            if($valid)
                            {
                                foreach($questoes as $questao)
                                {
                                    $resposta = new Resposta;
                                    $resposta->attributes = $_POST['Resposta'][$questao->id_questao];
                                    $resposta->id_resultado = $idResultado;
                                    $resposta->id_questao = $questao->id_questao;
                                    $resposta->id_alternativa = $_POST['Resposta'][$questao->id_questao]['id_alternativa'];
                                    $resposta->save(false);
                                }
                                
                                Yii::app()->user->setFlash('sucesso','Respostas salvas com sucesso!');
                                $this->redirect(array('site/grafico','q'=>$q,'res'=>$idResultado));
                            }else
                            {
                                Resposta::model()->deleteAll('id_resultado = :id_resultado',array(':id_resultado'=>$idResultado));
                                Resultado::model()->deleteByPk($idResultado);
                                Yii::app()->user->setFlash('erro','Erro ao salvar respostas!');
                            }
                        }
                    }
                }
            }
            
            $this->render('responder',array(
                'model'=>$model,
                'resposta'=>$resposta,
                'questionario'=>$questionario,
                'questoes'=>$questoes,
            ));
        }
        
        public function actionResultado($q)
        {
            $questionario = Questionario::model()->findByPk($q);
            $model = new Resultado('search');
            $model->unsetAttributes();
            $model->id_questionario = $q;
            $model->id_usuario = Yii::app()->user->id;
            
            $this->render('resultado',array(
                'model'=>$model,
                'questionario'=>$questionario,
            ));
        }
        
        public function actionGrafico($q,$res)
        {
            $questionario = Questionario::model()->findByPk($q);
            $resultado = Resultado::model()->findByPk($res);
            
            $txAtendimento = $resultado->calcResultado();
            
            $eixosQuestionario = QuestionarioEixo::model()->findAll('id_questionario = :id_questionario',array(':id_questionario'=>$q));
            
            foreach($eixosQuestionario as $k=>$eixoQuestionario)
            {
                $eixos[$k] = $eixoQuestionario->eixos->nome_eixo;
            }
            
            $this->render('grafico',array(
                'questionario'=>$questionario,
                'resultado'=>$resultado,
                'eixos'=>$eixos,
                'txAtendimento'=>$txAtendimento,
            ));
        } 
        
        public function actionImprimeRespostas($q,$res)
        {
            $questionario = Questionario::model()->findByPk($q);
            $resultado = Resultado::model()->findByPk($res);
            $respostas = Resposta::model()->findAll('id_resultado = :id_resultado',array('id_resultado'=>$res));

            Yii::import('application.extensions.tcpdf.*');
            
            $pdf = new SADPDF('P');
            $pdf->SetCreator('Sistema de Avaliação Diagnóstica');
            $pdf->setTitle('RELATÓRIO CONSOLIDADO DE RESULTADO');
            $pdf->setPrintHeader(true);
            $pdf->SetPrintFooter(true);
            $pdf->SetMargins('20','20','20');
            $pdf->AddPage();
            
            //INFORMAÇÕES GERAIS
            $txt = '';
            $txt .= '<p style="font-family: tahoma; font-size: 10pt; text-align: justify;">';
            $txt .= '<strong>Questionário: </strong>' . $questionario->nome . ' (Versão ' . number_format($questionario->versao,1) . ')<br />';
            $txt .= '<strong>Descrição: </strong>' . $questionario->descricao . '<br />';
            $txt .= '<strong>Respondido em: </strong>' . date('d/m/Y \à\s H:i:s',strtotime($resultado->data_resultado)) . '';
            $txt .= '</p>';
            
            //RESPOSTAS
            $txt .= '<p style="font-family: tahoma; font-size: 10pt; text-align: justify;"><strong>1. Número de Funcionários</strong><br />R: ' . $resultado->num_funcionario . '</p>';
            $txt .= '<p style="font-family: tahoma; font-size: 10pt; text-align: justify;"><strong>2. Faturamento da Empresa</strong><br />R: R$ ' . number_format($resultado->faturamento_empresa,2,',','.') . '</p>';

            foreach($respostas as $k=>$resposta)
            {
                $txt .= '<p style="font-family: tahoma; font-size: 10pt; text-align: justify;"><strong>'.($k+3).'. '.$resposta->questao->descricao_questao.'</strong><br />R: ' . $resposta->alternativa->texto . '</p>';
            }
            
            $pdf->writeHTML($txt,true,false,true,false,'');
            $pdf->Output('relatorioResultado'.date('dmYHis').'.pdf','I');
        }
}
